// 版权归Epic Games, Inc.所有。保留所有权利。

#include "LyraInputComponent.h"

#include "EnhancedInputSubsystems.h"
#include "Player/LyraLocalPlayer.h"
#include "Settings/LyraSettingsLocal.h"

#include UE_INLINE_GENERATED_CPP_BY_NAME(LyraInputComponent)

class ULyraInputConfig;

/**
 * 构造函数。
 * @param ObjectInitializer 对象初始化器
 */
ULyraInputComponent::ULyraInputComponent(const FObjectInitializer& ObjectInitializer)
{
}

/**
 * 添加输入映射。
 * @param InputConfig 输入配置数据资产
 * @param InputSubsystem 增强输入本地玩家子系统
 */
void ULyraInputComponent::AddInputMappings(const ULyraInputConfig* InputConfig, UEnhancedInputLocalPlayerSubsystem* InputSubsystem) const
{
	check(InputConfig); // 确保输入配置有效
	check(InputSubsystem); // 确保输入子系统有效

	// 在这里可以处理任何自定义逻辑，根据需要从输入配置中添加内容
}

/**
 * 移除输入映射。
 * @param InputConfig 输入配置数据资产
 * @param InputSubsystem 增强输入本地玩家子系统
 */
void ULyraInputComponent::RemoveInputMappings(const ULyraInputConfig* InputConfig, UEnhancedInputLocalPlayerSubsystem* InputSubsystem) const
{
	check(InputConfig); // 确保输入配置有效
	check(InputSubsystem); // 确保输入子系统有效

	// 在这里可以处理任何自定义逻辑，移除上面可能添加的输入映射
}

/**
 * 移除绑定。
 * @param BindHandles 绑定句柄数组
 */
void ULyraInputComponent::RemoveBinds(TArray<uint32>& BindHandles)
{
	// 遍历所有绑定句柄并移除绑定
	for (uint32 Handle : BindHandles)
	{
		RemoveBindingByHandle(Handle); // 通过句柄移除绑定
	}
	BindHandles.Reset(); // 重置绑定句柄数组
}